home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / jabber / JabberChat.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-13  |  7KB  |  177 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. from util import tag_parse, tag, callsback
  5. import pyxmpp.jabber.muc as pyxmpp
  6. from pyxmpp.message import Message
  7. import common.Conversation as common
  8. from util.observe import Observable
  9. from common import get_bname, Conversation
  10. from pyxmpp.all import JID
  11. from logging import getLogger
  12. log = getLogger('JabberChat')
  13. from pprint import pformat
  14.  
  15. class JabberChatBuddy(Observable):
  16.     
  17.     def __init__(self, mucRoomUser, room):
  18.         Observable.__init__(self)
  19.         self.user = mucRoomUser
  20.         self.room = room
  21.  
  22.     
  23.     def __getattr__(self, val, default = sentinel):
  24.         val = getattr(self.user, val, default)
  25.         if val is sentinel:
  26.             return object.__getattribute__(self, val, default)
  27.         else:
  28.             return val
  29.  
  30.     name = property((lambda self: self.user.nick))
  31.     
  32.     def service(self):
  33.         return self.room.protocol.name
  34.  
  35.     service = property(service)
  36.     
  37.     def idstr(self):
  38.         return u'/'.join([
  39.             self.service,
  40.             self.room.name,
  41.             self.name])
  42.  
  43.     
  44.     def alias(self):
  45.         return self.user.nick
  46.  
  47.     alias = property(alias)
  48.     
  49.     def __repr__(self):
  50.         user = self.user
  51.         if not user.real_jid:
  52.             pass
  53.         return '<JabberChatBuddy %s [%s %s] (Real JID: %s)>' % (user.room_jid, user.role, user.affiliation, '?')
  54.  
  55.  
  56.  
  57. class JabberChat(pyxmpp.jabber.muc.MucRoomHandler, Conversation):
  58.     ischat = True
  59.     
  60.     def __init__(self, protocol, jid):
  61.         Conversation.__init__(self)
  62.         self.jid = jid
  63.         self.protocol = protocol
  64.         self.protocol.conversations[jid.as_unicode()] = self
  65.         self.buddies = { }
  66.  
  67.     
  68.     def name(self):
  69.         name = self.room_state.room_jid.bare()
  70.         subject = self.room_state.subject
  71.         if subject:
  72.             return u'%s - %s' % (name, subject)
  73.         else:
  74.             return unicode(name)
  75.  
  76.     name = property(name)
  77.     
  78.     def user_joined(self, user, stanza):
  79.         bud = self._buddy(user)
  80.         self.room_list.append(bud)
  81.         log.info('user %r joined:\n%s', bud, pformat(list(self.room_list)))
  82.  
  83.     
  84.     def user_left(self, user, stanza):
  85.         bud = self.buddies[user.nick]
  86.         self.room_list.remove(bud)
  87.         log.info('user %r left:\n%s', bud, pformat(list(self.room_list)))
  88.  
  89.     
  90.     def nick_changed(self, user, old_nick, stanza):
  91.         b = self._buddy(user)
  92.         b.notify('name', old_nick, b.name)
  93.  
  94.     
  95.     def affiliation_changed(self, user, old_aff, new_aff, stanza):
  96.         self._buddy(user).notify('affiliation', old_aff, new_aff)
  97.  
  98.     
  99.     def role_changed(self, user, old_role, new_role, stanza):
  100.         self._buddy(user).notify('role', old_role, new_role)
  101.  
  102.     
  103.     def subject_changed(self, user, stanza):
  104.         self.notify('name', None, self.room_state.subject)
  105.  
  106.     
  107.     def message_received(self, user, stanza):
  108.         self.incoming_message(self._buddy(user), stanza.get_body())
  109.  
  110.     
  111.     def incoming_message(self, buddy, message):
  112.         self.typing_status[buddy] = None
  113.         self.received_message(buddy, message)
  114.  
  115.     
  116.     def room_configuration_error(self, stanza):
  117.         self.error(stanza)
  118.  
  119.     
  120.     def error(self, stanza):
  121.         err = stanza.get_error()
  122.         log.info('Error from: %r Condition: %r', stanza.get_from(), err.get_condition)
  123.  
  124.     
  125.     def _send_message(self, message):
  126.         self.room_state.send_message(message)
  127.  
  128.     
  129.     def invite(self, buddy, message = None, callback = None):
  130.         room = self
  131.         
  132.         try:
  133.             buddy = buddy.jid.as_unicode()
  134.         except:
  135.             buddy = JID(buddy).as_unicode()
  136.  
  137.         if message is None:
  138.             message = _('You have been invited to %s') % self.jid.as_unicode()
  139.         
  140.         m = Message(from_jid = room.protocol.self_buddy.jid, to_jid = room.jid)
  141.         x = m.xmlnode.newTextChild(None, 'x', None)
  142.         x.setNs(x.newNs('http://jabber.org/protocol/muc#user', None))
  143.         invite = x.newTextChild(None, 'invite', None)
  144.         invite.setProp('to', buddy)
  145.         reason = invite.newTextChild(None, 'reason', message)
  146.         self.protocol.send_cb(m, callback = callback)
  147.  
  148.     invite = callsback(invite)
  149.     
  150.     def send_typing_status(self, status):
  151.         pass
  152.  
  153.     
  154.     def set_subject(self, subject):
  155.         self.room_state.set_subject(subject)
  156.  
  157.     
  158.     def exit(self):
  159.         self.room_state.leave()
  160.         del self.protocol.conversations[self.jid.as_unicode()]
  161.  
  162.     
  163.     def self_buddy(self):
  164.         return self.protocol.self_buddy
  165.  
  166.     self_buddy = property(self_buddy)
  167.     
  168.     def _buddy(self, mucuser):
  169.         
  170.         try:
  171.             return self.buddies[mucuser.nick]
  172.         except KeyError:
  173.             return self.buddies.setdefault(mucuser.nick, JabberChatBuddy(mucuser, self))
  174.  
  175.  
  176.  
  177.